
*****************************************Influence of poverty concerns on demand for healthier foods: A field experiment in Mexico City***********************************************

***Open dataset: Data_WTPHealthyFoods_PovConcerns.dta


****Grouping of variables****

global Covariates Female Age HH_size Children_depratio Active Partnership Secondary_above Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red
global Covariates_green Female Age HH_size Children_depratio Active Partnership Secondary_above Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green
global Covariates_red Female Age HH_size Children_depratio Active Partnership Secondary_above Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_red

 
**************************************************
***Section 3. Materials and methods
**************************************************

***Table 1. Summary statistics
eststo clear
 eststo: estpost su Female Age Partnership Children_depratio HH_size None Primary Secondary Tertiary Active Grocery_expenses Tortilla Baguette Packaged_bread Consumption_frequency Bread_Restriction Not_hurry Not_tired High_stress_lately 
esttab, cells("mean sd min max") noobs

***Average stress level past month
sum Stress_Level_lastmonth

***Stress past month by income level
tab High_stress_lately Income_level, column nof

***Average stress level after poverty priming
sum Stress_level if High_pov==1
sum Stress_level if High_pov==0

***Stress level after poverty priming by income level
tab Highly_stressed Income_level if High_pov==1, column nof


**************************************************
***Section 4. Results
**************************************************


***Results 1. Willingness to pay in the absence of nutrition information

ci means WTP_red if Nutritional_info==0
ci means WTP_green if Nutritional_info==0

   
***Table 2. Effect of poverty concerns on reported stress level, measured cognitive skills and reported financial decisions.
eststo clear
  **Stress
   eststo: reg Highly_stressed High_pov Nutritional_info Poor $Covariates i.Location, vce(robust)
   eststo: reg Highly_stressed High_pov Nutritional_info High_Info Poor $Covariates i.Location, vce(robust)
   eststo: reg Highly_stressed High_pov Nutritional_info High_Poor Poor $Covariates  i.Location, vce(robust)
  **Cognitive skills
   eststo: reg Cognitive_load High_pov Nutritional_info Poor $Covariates i.Location, vce(robust)
   eststo: reg Cognitive_load High_pov Nutritional_info High_Info Poor $Covariates i.Location, vce(robust)
   eststo: reg Cognitive_load High_pov Nutritional_info High_Poor Poor $Covariates i.Location, vce(robust)
  **Borrow/pawn
   eststo: reg Priming_borrow_pawn High_pov Nutritional_info Poor $Covariates i.Location, vce(robust)
   eststo: reg Priming_borrow_pawn High_pov Nutritional_info High_Info Poor $Covariates i.Location, vce(robust)
   eststo: reg Priming_borrow_pawn High_pov Nutritional_info High_Poor Poor $Covariates i.Location, vce(robust)
  **Adjust grocery expenses
   eststo: reg Priming_adjust_grocery_expenses High_pov Nutritional_info Poor $Covariates  i.Location, vce(robust)   
   eststo: reg Priming_adjust_grocery_expenses High_pov Nutritional_info High_Info Poor $Covariates i.Location, vce(robust)   
   eststo: reg Priming_adjust_grocery_expenses High_pov Nutritional_info High_Poor Poor $Covariates i.Location, vce(robust)
esttab, se r2 k(High_pov Nutritional_info High_Info High_Poor Poor _cons) star(* 0.2 ** 0.1 *** 0.02) b(%12.3f) compress	
                                                                         ///Starts defined to obtain one-sided p-values significance//// 

   **Mean differences on psychological and behavioural responses by poverty priming condition
    *Means
    eststo clear
      eststo: estpost su Highly_stressed Cognitive_load Priming_borrow_pawn Priming_adjust_grocery_expenses  if High_pov==1
      eststo: estpost su Highly_stressed Cognitive_load Priming_borrow_pawn Priming_adjust_grocery_expenses if High_pov==0
    esttab, main(mean) b(%12.2f)
   *T-test equality of means
    eststo clear
      eststo: estpost ttest Highly_stressed Cognitive_load Priming_borrow_pawn Priming_adjust_grocery_expenses, by(High_pov) 
    esttab, not se star(* 0.1 ** 0.05 *** 0.01) b(%12.2f)

***Effect winning or losing the auction on cognitive load
reg Cognitive_load High_pov Nutritional_info Poor $Covariates auction_result i.Location, vce(robust)
   


***Table 3a. Regression analysis on willingness to pay for the green bread.

**PANEL I: Green bread
eststo clear
   *Without controls
   eststo: reg WTP_green High_pov Nutritional_info i.Location if WTP_green>0, vce(robust)
   eststo: reg WTP_green High_pov Nutritional_info High_Info i.Location if WTP_green>0, vce(robust)
   eststo: reg WTP_green High_pov Nutritional_info High_Poor Poor i.Location if WTP_green>0, vce(robust)
   *With controls
   eststo: reg WTP_green High_pov Nutritional_info Poor $Covariates_green i.Location if WTP_green>0, vce(robust)   
   eststo: reg WTP_green High_pov Nutritional_info High_Info Poor $Covariates_green i.Location if WTP_green>0, vce(robust)
   eststo: reg WTP_green High_pov Nutritional_info High_Poor Poor $Covariates_green i.Location if WTP_green>0, vce(robust)
esttab, se r2 k(High_pov Nutritional_info High_Info High_Poor Poor _cons) star(* 0.2 ** 0.1 *** 0.02) b(%12.3f)
                                                                                 ///Starts defined to obtain one-sided p-values significance//// 
  
***Table 3b. Regression analysis on willingness to pay for the red bread.
eststo clear
   *Without controls
   eststo: reg WTP_red High_pov Nutritional_info i.Location, vce(robust)
   eststo: reg WTP_red High_pov Nutritional_info High_Info i.Location, vce(robust)
   eststo: reg WTP_red High_pov Nutritional_info High_Poor Poor  i.Location, vce(robust)
   *With controls
   eststo: reg WTP_red High_pov Nutritional_info Poor $Covariates_red i.Location, vce(robust)   
   eststo: reg WTP_red High_pov Nutritional_info High_Info Poor $Covariates_red i.Location, vce(robust)
   eststo: reg WTP_red High_pov Nutritional_info High_Poor Poor  $Covariates_red i.Location, vce(robust)
esttab, se r2 k(High_pov Nutritional_info High_Info High_Poor Poor _cons) star(* 0.2 ** 0.1 *** 0.02) b(%12.3f)  
                                                                                ///Starts defined to obtain one-sided p-values significance//// 


**Multiple hypothesis testing
   
    **FWER p-values
	*Secondary outcomes
	 preserve	 
	 rename Highly_stressed High
	 rename Cognitive_load Cogn
	 rename Priming_borrow_pawn Borr
	 rename Priming_adjust_grocery_expenses Groce	 	 
	 *Positive side
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info High_Info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info High_Poor) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 *Negative side
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info High_Info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf High Cogn Borr Groce, indepvar(High_pov Nutritional_info High_Poor) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 restore
	 
	*Primary outcomes
     *Positive side
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info) controls(i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Info) controls(i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Poor) controls(Poor i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Poor) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(positive) seed(967245)
     *Negative side
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info) controls(i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Info) controls(i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Poor) controls(Poor i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Info) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
	 rwolf WTP_green WTP_red if WTP_green>0, indepvar(High_pov Nutritional_info High_Poor) controls(Poor $Covariates i.Location) cluster(person) vce(robust) reps(3000) method(regress) onesided(negative) seed(967245)
 
     **FDR q-values estimated with Michael Anderson's code (see http://are.berkeley.edu/~mlanderson/downloads/fdr_sharpened_qvalues.do.zip)	

	 
***Result 2c. Mediation analysis

sem (High_pov Poor $Covariates $Locations  -> Stress_level , ) (High_pov Poor $Covariates $Locations  -> WTP_green, ) (High_pov Poor $Covariates $Locations -> Cognitive_load, ) ( Stress_level Poor $Covariates $Locations  -> WTP_green, ) (Cognitive_load Poor $Covariates $Locations  -> WTP_green, ) if WTP_green>0,  vce(robust) nocapslatent

**Posestimation

*Total, direct and indirect effects
estat teffects

*Descomposition of indirect effects
nlcom _b[Stress_level:High_pov]*_b[WTP_green:Stress_level] // through stress
nlcom _b[Cognitive_load:High_pov]*_b[WTP_green:Cognitive_load] // through stress
nlcom (_b[Stress_level:High_pov]*_b[WTP_green:Stress_level] + _b[Cognitive_load:High_pov]*_b[WTP_green:Cognitive_load]) // overall indirect effect


***Result 2d. Sthocastic dominance tests

somersdtest WTP_green if Poor==1 & WTP_green>0, by(High_pov)
ksmirnov WTP_green if Poor==1, by(High_pov) exact

	 
***Result 3. Remembers nutritional and health risks
sum Know_nutritional if Nutritional_info==1
sum Know_risks if Nutritional_info==1



**************************************************
***Supporting information. Additional tables.
**************************************************
	
***S2 Table. Sensory attributes' descriptive statistics by bread type. 
*Means red bread
su Smell_red Taste_red Texture_red Appearance_red Colour_red Size_red Thickness_red
*Means green bread
su Smell_green Taste_green Texture_green Appearance_green Colour_green Size_green Thickness_green
**Paired t-test 
ttest Smell_red==Smell_green
ttest Taste_red==Taste_green
ttest Texture_red==Texture_green
ttest Appearance_red==Appearance_green
ttest Colour_red==Colour_green
ttest Size_red==Size_green
ttest Thickness_red==Thickness_green


***S3 Table. Randomization checks
eststo clear
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if High_pov==1
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if High_pov==0
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if Nutritional_info==1
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if Nutritional_info==0
esttab, main(mean) b(%12.2f)

**p-values for dummy variables

*High poverty concern
tabulate High_pov Female, nofreq V chi2
tabulate High_pov Partnership,  nofreq V chi2
tabulate High_pov Secondary_above,  nofreq V chi2
tabulate High_pov Active,  nofreq V chi2
tabulate High_pov Poor,  nofreq V chi2
tabulate High_pov Bread_Restriction,  nofreq V chi2
tabulate High_pov LastMeal_recently,  nofreq V chi2
tabulate High_pov Not_hurry,  nofreq V chi2
tabulate High_pov Not_tired,  nofreq V chi2
tabulate High_pov High_stress_lately,  nofreq V chi2

*Information
tabulate Nutritional_info Female, nofreq V chi2
tabulate Nutritional_info Partnership,  nofreq V chi2
tabulate Nutritional_info Secondary_above,  nofreq V chi2
tabulate Nutritional_info Active,  nofreq V chi2
tabulate Nutritional_info Poor,  nofreq V chi2
tabulate Nutritional_info Bread_Restriction,  nofreq V chi2
tabulate Nutritional_info LastMeal_recently,  nofreq V chi2
tabulate Nutritional_info Not_hurry,  nofreq V chi2
tabulate Nutritional_info Not_tired,  nofreq V chi2
tabulate Nutritional_info High_stress_lately,  nofreq V chi2

**p-values for continous variables

*High poverty concern
eststo clear
 eststo: estpost ttest Age Children_depratio HH_size Sensory_green Sensory_red, by(High_pov)
esttab, noobs not p star(* 0.1 ** 0.05 *** 0.01) b(%12.2f)

*Information
eststo clear
 eststo: estpost ttest Age Children_depratio HH_size Sensory_green Sensory_red, by(Nutritional_info)
esttab, noobs not p star(* 0.1 ** 0.05 *** 0.01) b(%12.2f)


        //////////////Only unbalances (5%) are on level of hurry for the poverty priming treatment. Also weakly (10%) on 
		//////the children dependency reation and level of education in the high poverty concern and nutrition treatments, respectively, 

		
***Alternative balance check. Joint test of orthogonality


probit High_pov Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red i.Location i.Enumerator, vce(robust)
		** Test that all reggression coefficients are simultaneously equal to zero
		test Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red

probit Nutritional_info Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red i.Location i.Enumerator, vce(robust)
		** Test that all reggression coefficients are simultaneously equal to zero
		test Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red


***S4 Table. Comparison of participants' characteristics across enumerators' gender. 
	
**Mean values by treatment gorup
eststo clear
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if Enumerator_gender==0
 eststo: estpost su Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red if Enumerator_gender==1
esttab, main(mean) b(%12.2f)

**p-values for dummy variables

tabulate Enumerator_gender Female, nofreq V chi2
tabulate Enumerator_gender Partnership,  nofreq V chi2
tabulate Enumerator_gender Secondary_above,  nofreq V chi2
tabulate Enumerator_gender Active,  nofreq V chi2
tabulate Enumerator_gender Poor,  nofreq V chi2
tabulate Enumerator_gender Bread_Restriction,  nofreq V chi2
tabulate Enumerator_gender LastMeal_recently,  nofreq V chi2
tabulate Enumerator_gender Not_hurry,  nofreq V chi2
tabulate Enumerator_gender Not_tired,  nofreq V chi2
tabulate Enumerator_gender High_stress_lately,  nofreq V chi2

**p-values for continous variables

eststo clear
 eststo: estpost ttest Age Children_depratio HH_size Sensory_green Sensory_red, by(Enumerator_gender)
esttab, noobs not p star(* 0.1 ** 0.05 *** 0.01) b(%12.2f)


***Joint test of orthogonality

probit Enumerator_gender Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red i.Location, vce(robust)
		** Test that all reggression coefficients are simultaneously equal to zero
		test Female Age Partnership Children_depratio HH_size Secondary_above Active Poor Bread_Restriction LastMeal_recently Not_hurry Not_tired High_stress_lately Sensory_green Sensory_red

		
***S5 Table. Robustness checks: Adding enumerator and day of the week fixed effects
 
**Enumerator and day of the week fixed effects
*PANEL I: Green bread
eststo clear
   eststo: reg WTP_green High_pov Nutritional_info Poor $Covariates_green i.Location if WTP_green>0, vce(robust)   
   eststo: reg WTP_green High_pov Nutritional_info Poor $Covariates_green i.Location i.Enumerator if WTP_green>0, vce(robust)
   eststo: reg WTP_green High_pov Nutritional_info Poor $Covariates_green i.Location i.Enumerator i.dow if WTP_green>0, vce(robust)   
esttab, se r2 k(High_pov Nutritional_info _cons) star(* 0.2 ** 0.1 *** 0.02) b(%12.3f)
												///Starts defined to obtain one-sided p-values significance//// 

*PANEL II: Red bread
eststo clear
   eststo: reg WTP_red High_pov Nutritional_info Poor $Covariates_red i.Location, vce(robust)   
   eststo: reg WTP_red High_pov Nutritional_info Poor $Covariates_red i.Location i.Enumerator, vce(robust)
   eststo: reg WTP_red High_pov Nutritional_info Poor $Covariates_red i.Location i.Enumerator i.dow, vce(robust)   
esttab, se r2 k(High_pov Nutritional_info _cons) star(* 0.2 ** 0.1 *** 0.02) b(%12.3f)
												///Starts defined to obtain one-sided p-values significance//// 
